package py.com.erpone.session.dm;

import javax.ejb.LocalBean;
import javax.ejb.Stateful;
import javax.enterprise.context.Conversation;
import javax.enterprise.context.ConversationScoped;
import javax.inject.Inject;
import javax.inject.Named;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.PersistenceContextType;


import py.com.erpone.entity.dm.Sector;


/**
 * Session Bean implementation class SectorBean
 */
@Stateful
@Named // para tener acceso al objeto
@LocalBean // Designates that a session bean exposes a no-interface view. 
@ConversationScoped // para que mantenga la conversacion cuando se inicia. (solamente en stateful)
public class SectorBean {

	@PersistenceContext(type=PersistenceContextType.EXTENDED) // detecta el nombre del config del persistence. 												  // (en este caso sin parametro por que hay solo un persistence unit)
	private EntityManager em;
	
	@Inject // para que instancie una clase , para usar sus elementos.
	private Conversation conversation;
	
	private Sector sector;
	
	
	public SectorBean() {
    }

	
    public Sector getSector() {
		return sector;
	}

	public void setSector(Sector sector) {
		this.sector = sector;
	}

	// Para iniciar la conversacion 
	public String iniciar(){
		if(conversation.isTransient()) // Verifica si no se inicio , inicia
			conversation.begin(); // Inicia la conversacion
		sector=new Sector(); // Instancia Sector
		return "/dm/sector.xhtml"; // Retorna la pagina del formulario. (Registrar sector)
	}
	
	// Para editar el Sector
	public String iniciar(Sector sector){
		if(conversation.isTransient())
			conversation.begin();
		this.sector=sector;
		return "/dm/sector.xhtml";
	}

	public String guardar(){
		if(sector.getId()==null) // Verifica si existe Id antes de guardar.
			em.persist(sector); // Almacena en la base de datos
		else
			em.merge(sector); // Actualiza en la base de datos
		if(!conversation.isTransient()) // Si se inicio la conversacion
			conversation.end(); // Termina la conversacion
		return "/dm/sectores.xhtml";
	}
	
	public String eliminar(Sector sector){
		em.remove(em.merge(sector));
		if(!conversation.isTransient())
			conversation.end();
		return "/dm/sectores.xhtml";
	}

	public String cancelar(){
		if(!conversation.isTransient())
			conversation.end();
		return "/dm/sectores.xhtml";
	}


} // Fin de la clase
